package chapter_03

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}


class SearchFunctions(val query: String) {
  // scala向spark的函数传递

  val conf = new SparkConf().setMaster("local").setAppName("My App")
  val sc = new SparkContext(conf)

  def isMatch(s: String): Boolean = s.contains(query)

  def getMatchesFunctionReference(rdd: RDD[String]) = {
    // 问题：“isMatch”表示“this.isMatch”，因此我们要传递整个this
    rdd.map(isMatch)
  }

  def getMatchesFieldReference(rdd: RDD[String]) = {
    // 问题：query表示this.query，因此我们要传递整个this
    rdd.map(x => x.split(query))
  }

  def getMatchesNoReference(rdd: RDD[String]) = {
    // 安全：只把我们需要的字段拿出来放入局部变量中
    val query_ = this.query
    rdd.map(x => x.split(query_))
  }
}


object SearchFunctions {

  def main(args: Array[String]): Unit = {

  }
}
